Step함수 | 기본적인 활성함수로, 0 또는 1을 반환하는 이진형 함수이다. |
Sigmoid 함수 | 로지스틱회귀분석의 확률값을 구하기 위한 계산 식과 유사하며, 0과 1사이의 값을 반환 |
Sign 함수 | 기본적인 활성함수로, -1 또는 1을 반환하는 이진형 함수이다. |
tanh 함수 | 확장된 형태의 시그모이드 함수로 중심값은 0이며, -1과 1사이의 값을 출력한다. |
ReLU 함수 | 최근 딥러닝에서 가장 많이 사용되는 함수로 입력값과 0중에서 큰 값을 반환한다. |
Softmax 함수 | 표준화지수 함수, 출력값이 다범주인 경우 사용(확률값을 반환한다.) |
> library(neuralnet)
> index<-sample(c(1, 2), nrow(iris), replace=T, prob=c(0.7, 0.3))
> train<-iris[index==1, ]
> test<-iris[index==2, ]
#act.fct는 활성함수로 기본값은 logistic(Sigmoid)이다. 이외에 tanh도 사용가능
# 4개의 은닉노드를 가지는 2개의 은닉층
> result<-neuralnet(data=train, Species~., hidden=c(4, 4), stepmax=1e7)
> pred<-predict(result, newdata=test)
> head(pred, 5)
[,1] [,2] [,3]
1 0.9989869 0.0010169890 1.261767e-05
5 0.9975306 0.0024718610 1.406149e-05
8 0.9996944 0.0003102363 1.188934e-05
14 1.0013386 -0.0013323100 1.031640e-05
16 0.9930177 0.0069801541 1.847615e-05
# 출력변수로 ‘setosa’, ‘versicolor’, ‘virginica’의 3개의 변수를 보유
> predicted_class<-c()
> for(i in 1:nrow(test)){
+ loc<-which.max(pred[i, ])
+ if(loc==1){
+ predicted_class<-c(predicted_class, 'setosa')
+ }else if(loc==2){
+ predicted_class<-c(predicted_class, 'versicolor')
+ }else{
+ predicted_class<-c(predicted_class, 'virginica')
+ }
+}
> head(predicted_class, 5)
[1] "setosa" "setosa" "setosa" "setosa" “setosa"
> pred<-predict(result, newdata=test)
> table(condition=test$Species, predicted_class)
predicted_class
condition setosa versicolor virginica
setosa 11 0 0
versicolor 0 11 0
virginica 0 0 11